Стандартная библиотека C++
Стандартная библиотека C++ - это коллекция классов и функций языка программирования C++, которые написаны на базовом языке и являются частью стандарта C++ ISO. стандарта.[1]
Обзор
Стандартная библиотека C++ предоставляет несколько общих контейнеров, функции для использования и манипулирования этими контейнерами, объекты функций, общие строки и потоки (включая интерактивный и файловый ввод-вывод), поддержку некоторых возможностей языка, а также функции для таких распространенных задач, как нахождение квадратного корня из числа. Стандартная библиотека C++ также включает в себя большинство заголовков стандартной библиотеки ISO C, заканчивающихся на ".h", но их использование устарело (отменено с 2003 года). [2] Ни один другой заголовок в стандартной библиотеке C++ не заканчивается на ".h". Функции Стандартной библиотеки C++ объявляются в пространстве имён std
.
Стандартная библиотека C++ основана на соглашениях, введенных Библиотеке стандартных шаблонов STL, и испытала влияние исследований в области обобщенного программирования и разработчиков STL, таких как Александр Степанов и Менг Ли.[3][4] Хотя стандартная библиотека C++ и STL имеют много общих черт, ни одна из них не является строгим супермножеством другой.
Примечательной особенностью стандартной библиотеки C++ является то, что она не только определяет синтаксис и семантику общих алгоритмов, но и предъявляет требования к их производительности.[5] Эти требования к производительности часто соответствуют известному алгоритму, использование которого ожидается, но не обязательно. В большинстве случаев для этого требуется линейное время O(n) или линейно-логарифмическое время O(n log n), но в некоторых случаях допускаются более высокие границы, например, квазилинейное время O(n log2 n) для стабильной сортировки, чтобы позволить сортировку слиянием по-месту (in-place). Ранее требовалось, чтобы сортировка занимала в среднем только O(n log n), что позволяло использовать быструю сортировку (quicksort), которая на практике достаточно быстра, но имеет низкую производительность в худшем случае. Но потом был введен introsort для обеспечения как быстрой средней производительности, так и оптимальной сложности в худшем случае, а начиная с C++11 сортировка гарантированно является в худшем случае линейной.
Примечания
- ↑ ISO/IEC 14882:2003(E) Programming Languages – C++ §17-27
- ↑ ISO/IEC 14882:2003(E) Programming Languages – C++ §D.5
- ↑ Bjarne Stroustrup. The Design and Evolution of C++ §8.5. — Addison Wesley, 1994. — ISBN 0-201-54330-3.
- ↑ Alexander Stepanov, Meng Lee. The Standard Template Library . HP Labs (1 August 1994). Дата обращения: 22 октября 2017.
- ↑ "Обобщенные алгоритмы", Давид Массер